package delphorm.service.personne;

import java.util.List;

import delphorm.dao.personne.IGroupeCollectif;
import delphorm.entite.personne.DroitGroupe;
import delphorm.entite.personne.GroupeCollectif;
import delphorm.entite.personne.Utilisateur;

public class ImplGroupeCollectif implements delphorm.service.personne.IGroupeCollectif {
	IGroupeCollectif daoGroupeCollectif;
	IPersonne servicePersonne;
	
	public IGroupeCollectif getDaoGroupeCollectif() {
		return daoGroupeCollectif;
	}

	public void setDaoGroupeCollectif(IGroupeCollectif daoGroupeCollectif) {
		this.daoGroupeCollectif = daoGroupeCollectif;
	}

	public GroupeCollectif chercherGroupeParId(Long id) {		
		return daoGroupeCollectif.getGroupeById(id);
	}

	public GroupeCollectif enregistrerGroupe(GroupeCollectif groupe) {
		return daoGroupeCollectif.ajouterGroupe(groupe);
	}

	public List chercherTous() {
		return daoGroupeCollectif.getAll();
	}

	public void supprimerGroupe(Long id) {
		GroupeCollectif groupe = daoGroupeCollectif.getGroupeById(id);
		daoGroupeCollectif.supprimerGroupe(groupe);
		
	}

	public DroitGroupe chercherDroitGroupeParId(Long idgroupe, Long idutilisateur) {
		return daoGroupeCollectif.getDroitGroupeById(idgroupe,idutilisateur);
	}

	public List chercherUtilisateursDansGroupe(Long idgroupe) {
		return daoGroupeCollectif.getDroitGroupeByIdGroupe(idgroupe);
	}

	public List chercherGroupesDeUtilisateur(Long idutilisateur) {
		return daoGroupeCollectif.getDroitGroupeByIdUtilisateur(idutilisateur);
	}

	public boolean existeParNom(String nom) {
		if(daoGroupeCollectif.getGroupeByNom(nom) == null)
			return false;
		else
			return true;
	}

	public void enregistrerDroitGroupe(DroitGroupe droitgroupe) {
		if(droitgroupe.getUtilisateur().getId() == null)
		{
			Utilisateur u = servicePersonne.chercherUtilisateurParLogin(droitgroupe.getUtilisateur().getLogin());
			droitgroupe.setUtilisateur(u);
		}
		if(droitgroupe.getGroupe().getId() == null)
		{
			GroupeCollectif g = chercherGroupeParNom(droitgroupe.getGroupe().getNom());
			droitgroupe.setGroupe(g);
		}
		daoGroupeCollectif.enregistrerDroitGroupe(droitgroupe);
	}
	public GroupeCollectif chercherGroupeParNom(String nom) {
		return daoGroupeCollectif.getGroupeByNom(nom);
	}

	public IPersonne getServicePersonne() {
		return servicePersonne;
	}

	public void setServicePersonne(IPersonne servicePersonne) {
		this.servicePersonne = servicePersonne;
	}

	

}
